package v1

import (
	"donkey-admin/internal/model/entity"
	"github.com/gogf/gf/v2/frame/g"
)

type CreateSysTaskReq struct {
	g.Meta         `path:"createSysTask.Add" tags:"task" method:"post" summary:"创建定时任务"`
	TaskName       string `json:"taskName"       v:"required#任务名称为必填参数"`    // 任务名称
	TaskGroup      string `json:"taskGroup"      v:"required#任务分组为必填参数"`    // 任务分组
	CronExpression string `json:"cronExpression" v:"required#cron表达式为必填参数"` // cron_expression
	InvokeTarget   string `json:"invokeTarget"  v:"required#调用函数为必填参数"`     //调用函数名
	Args           string `json:"args"`                                     //任务参数，如果为HTTP任务，则为body
	HttpMethod     string `json:"httpMethod"`                               // http_method
	Timeout        int64  `json:"timeout" d:"0"`                            // 任务执行超时时间(单位秒),0不限制
	Multi          int    `json:"multi"   d:"0"`                            // 是否允许多实例运行
	RetryTimes     int    `json:"retryTimes" d:"0"`                         // 重试次数
	RetryInterval  int64  `json:"retryInterval" d:"0"`                      // 重试间隔时间
	Tag            string `json:"tag" v:"required#任务类型为必填参数"`               //任务类型
	Remark         string `json:"remark"`                                   //定时任务描述信息
	Status         int    `json:"status" d:"1"`                             // 状态 1:正常 0:停止
}
type CreateSysTaskRes struct {
}

type DeleteTaskReq struct {
	g.Meta `path:"deleteSysTask.Delete" tags:"task" method:"delete" summary:"删除定时任务"`
	Uuid   string `json:"uuid" v:"required#任务代码为必填参数"`
}
type DeleteTaskRes struct {
}

type DeleteTaskByIdsReq struct {
	g.Meta `path:"deleteSysTaskByIds.Delete" tags:"task" method:"delete" summary:"批量删除定时任务"`
	Uuids  []string `json:"uuids" v:"required#任务代码为必填参数"`
}
type DeleteTaskByIdsRes struct {
}

type UpdateTaskReq struct {
	g.Meta         `path:"updateSysTask.Update" tags:"task" method:"post" summary:"更新定时任务"`
	Uuid           string `json:"uuid" v:"required#任务代码为必填参数"`
	TaskName       string `json:"taskName"       v:"required#任务名称为必填参数"`    // 任务名称
	TaskGroup      string `json:"taskGroup"      v:"required#任务分组为必填参数"`    // 任务分组
	CronExpression string `json:"cronExpression" v:"required#cron表达式为必填参数"` // cron_expression
	InvokeTarget   string `json:"invokeTarget"  v:"required#调用函数为必填参数"`     //调用函数名
	Args           string `json:"args"`                                     //任务参数，如果为HTTP任务，则为body
	HttpMethod     string `json:"httpMethod"`                               // http_method
	Timeout        int64  `json:"timeout" d:"0"`                            // 任务执行超时时间(单位秒),0不限制
	Multi          int    `json:"multi"   d:"0"`                            // 是否允许多实例运行
	RetryTimes     int    `json:"retryTimes" d:"0"`                         // 重试次数
	RetryInterval  int64  `json:"retryInterval" d:"0"`                      // 重试间隔时间
	Tag            string `json:"tag" v:"required#任务类型为必填参数"`               //任务类型
	Remark         string `json:"remark"`                                   //定时任务描述信息
	Status         int    `json:"status" d:"1"`                             // 状态 1:正常 0:停止
}
type UpdateTaskRes struct {
}

type FindTaskReq struct {
	g.Meta `path:"findSysTask.Get" tags:"task" method:"post" summary:"根据ID获取定时任务"`
	Uuid   string `json:"uuid" v:"required#任务代码为必填参数"`
}
type FindTaskRes struct {
}

type GetSysTaskListReq struct {
	g.Meta `path:"getSysTaskList.Get" tags:"task" method:"get" summary:"获取定时任务列表"`
}
type GetSysTaskListRes struct {
	TaskList []entity.SysTask `json:"taskList"`
}

type RunOneSysTaskReq struct {
	g.Meta `path:"runOneSysTask.Get" tags:"task" method:"get" summary:"运行一次指定定时任务"`
	Uuid   string `json:"uuid" v:"required#任务代码为必填参数"`
}
type RunOneSysTaskRes struct {
}

type EnableSysTaskReq struct {
	g.Meta `path:"enableSysTask.Get" tags:"task" method:"post" summary:"激活指定定时任务"`
	Uuid   string `json:"uuid" v:"required#任务代码为必填参数"`
}
type EnableSysTaskRes struct {
}

type DisableSysTaskReq struct {
	g.Meta `path:"disableSysTask.Get" tags:"task" method:"post" summary:"暂停指定定时任务"`
	Uuid   string `json:"uuid" v:"required#任务代码为必填参数"`
}
type DisableSysTaskRes struct {
}

type RemoveSysTaskReq struct {
	g.Meta `path:"removeSysTask.Get" tags:"task" method:"post" summary:"删除指定定时任务"`
	Uuid   string `json:"uuid" v:"required#任务代码为必填参数"`
}
type RemoveSysTaskRes struct {
}
